//047. 不同的质因数
//        第一个有两个不同质因数的两个相邻整数是：
//        14=2×7
//        15=3×5
//        第一个有三个不同质因数的三个相邻整数是：
//        644=22×7×23
//        645=3×5×43
//        646=2×17×19
//        找到第一个有四个不同质因数的四个相邻整数，求这四个整数中的第一个。
//        答案：134043

import java.util.LinkedList;

public class Week047 {
    static int n = 4;
    static int[] count;

    static int getCount(int x) {
//        LinkedList<Integer> list = new LinkedList<Integer>();
        int cnt = 0;
        if (x % 2 == 0) {
            ++cnt;
//            list.add(2);
            do {
                x /= 2;
            } while (x % 2 == 0);
        }
        for (int i = 3; x != 1; i += 2) {
            if (x % i == 0) {
//                list.add(i);
                ++cnt;
                do {
                    x /= i;
                } while (x % i == 0);
            }
        }
//        return list.size();
        return cnt;
    }

    static boolean check() {
        for (int i = 0; i < n; ++i) {
            if (count[i] != n) return false;
        }
        return true;
    }

    static void run() {
        count = new int[n];
        int i = 2 * 3 * 5 * 7;
        for (int j = 0; j + 1 < n; ++j) {
            count[(i + j) % n] = getCount(i + j);
        }
        while (true) {
            count[(i + n - 1) % n] = getCount(i + n - 1);
            if (check()) {
                System.out.println(i);
                return;
            }
            ++i;
        }
    }

    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        run();
        System.out.println("\n程序运行时间：" + (System.currentTimeMillis() - startTime) + "ms.");
    }
}
